kbuild: switch from lz4c to lz4 for compression
authorParth Pancholi <parth.pancholi@toradex.com>
Thu, 14 Nov 2024 14:56:44 +0000 (15:56 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Sun, 2 Feb 2025 13:17:45 +0000 (14:17 +0100)
Origin: https://git.kernel.org/linus/e397a603e49cc7c7c113fad9f55a09637f290c34

Replace lz4c with lz4 for kernel image compression.
Although lz4 and lz4c are functionally similar, lz4c has been deprecated
upstream since 2018. Since as early as Ubuntu 16.04 and Fedora 25, lz4
and lz4c have been packaged together, making it safe to update the
requirement from lz4c to lz4.

Consequently, some distributions and build systems, such as OpenEmbedded,
have fully transitioned to using lz4. OpenEmbedded core adopted this
change in commit fe167e082cbd ("bitbake.conf: require lz4 instead of
lz4c"), causing compatibility issues when building the mainline kernel
in the latest OpenEmbedded environment, as seen in the errors below.

This change also updates the LZ4 compression commands to make it backward
compatible by replacing stdin and stdout with the '-' option, due to some
unclear reason, the stdout keyword does not work for lz4 and '-' works for
both. In addition, this modifies the legacy '-c1' with '-9' which is also
compatible with both. This fixes the mainline kernel build failures with
the latest master OpenEmbedded builds associated with the mentioned
compatibility issues.

LZ4     arch/arm/boot/compressed/piggy_data
/bin/sh: 1: lz4c: not found
...
...
ERROR: oe_runmake failed

Link: https://github.com/lz4/lz4/pull/553
Suggested-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name kbuild-switch-from-lz4c-to-lz4-for-compression.patch

Makefile
scripts/Makefile.lib

index 4de8999fc3f178fae165903aa977cf5f023953e4..3cbcfeb11314f8c73008562cc377877509575e2f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -491,7 +491,7 @@ KGZIP               = gzip
 KBZIP2         = bzip2
 KLZOP          = lzop
 LZMA           = lzma
-LZ4            = lz4c
+LZ4            = lz4
 XZ             = xz
 ZSTD           = zstd
 
index 01a9f567d5af4869ec518d3186ecb27fa5c991a5..fe5e132fcea89a610d64e3738812b35156ff423e 100644 (file)
@@ -371,10 +371,10 @@ quiet_cmd_lzo_with_size = LZO     $@
       cmd_lzo_with_size = { cat $(real-prereqs) | $(KLZOP) -9; $(size_append); } > $@
 
 quiet_cmd_lz4 = LZ4     $@
-      cmd_lz4 = cat $(real-prereqs) | $(LZ4) -l -c1 stdin stdout > $@
+      cmd_lz4 = cat $(real-prereqs) | $(LZ4) -l -9 - - > $@
 
 quiet_cmd_lz4_with_size = LZ4     $@
-      cmd_lz4_with_size = { cat $(real-prereqs) | $(LZ4) -l -c1 stdin stdout; \
+      cmd_lz4_with_size = { cat $(real-prereqs) | $(LZ4) -l -9 - -; \
                   $(size_append); } > $@
 
 # U-Boot mkimage